package main

import "fmt"

type Human struct {
	Name string
	Age  int
}

func (this *Human) SayHi() {
	fmt.Println("Human SayHi")
}

func (this *Human) Fly() {
	fmt.Println("Human Fly")
}

type SuperHuman struct {
	Human
	Level int
}

func (this *SuperHuman) SayHi() {
	fmt.Println("SuperMan SayHi")
}

func (this *SuperHuman) Print() {
	fmt.Printf("%v", this.Human)
}

func main() {
	man := Human{"xxz", 12}
	man.SayHi()
	man.Fly()

	var superman SuperHuman
	superman = SuperHuman{Human{"wega", 99}, 4}
	//superman.Human.Name = "sss"
	//superman.Human.Age = 22
	//superman.Human = Human{"sss", 99}
	//superman.Level = 88
	superman.SayHi()
	superman.Fly()
	superman.Print()

}
